Beginning in the 1950s, scholars have reflected on the lack of development in low and middle-income countries. This correlation between lower income and slower growth was originally suspected to be a factor of path dependence, where a lack of wealth in the 1800s and 1900s could lead to a lack of growth in the 21st century. However, the 1980s demonstrated that lower-income countries CAN experience rapid economic growth, by a factor of more than 10% per year. In particular, the “miracle growth” countries like China, Korea, and Japan, categorized as countries with sustained economic growth of more than 6% per year, inspired further research. Still, the majority of low-income nations remained low-income. Some glaring exceptions also stood out: countries endowed with natural resources which should catalyze growth and integration into the international economy. Often, the results were counterintuitive to logic. These countries, endowed with oil, natural gas, and other high-value-added resources, experienced slower economic growth than their high-income counterparts and their low-income neighbors. In 1993, Richard Auty coined the term resource curse to describe this phenomenon of lower economic growth in resource-abundant countries.
The resource curse was inspired by another similar phenomenon, the Dutch disease. The Dutch disease suggests that increased exports of natural resources instigated a decline in national production competitiveness and created conditions for recessions. Growing natural resource markets often correlate to weakened export markets of goods and services because tradable goods become less competitive as the country becomes less specialized in its non-resource goods. Particularly for countries in the fuel industry, these changes in specialization influence how competitive countries are in the international and create unfavorable conditions for economic growth. The resource curse expands this phenomenon to include economic stagnation and stunting of growth in sectors outside of the export market.
Our research aims to investigate this exact topic: How does the resource curse affect low-income economies and do natural resources induce economic stagnation?
In 2012, the International Monetary Fund (IMF) categorized 51 nations as “resource-rich,” which account for a population of more than a billion people. A majority of these nations showed exhaustible natural resources account for at least 20% of fiscal revenue or 20% of exports. 29 of these nations have incomes that are low or lower middle class (Venables, 16). The 29 nations share the following traits: heavy reliance on natural resource wealth for taxation, exports, or both, inadequate savings rates, subpar economic performance, and highly variable resource income.
Resources account for one of the world’s largest sectors, accounting for nearly 20% of global production. The growing influence of oil and natural gas in recent decades also increased the influence of the resources market. However, with the growing influence of green energies and increased awareness of the dangers of mineral mining, there are increasing pressures to limit the natural resource industries. Moving into the future, shifts towards renewable energy sources could threaten the already rocky stability of resource markets. Understanding the potential influences in these markets can improve their transition into new markets and avoid the negative consequences of market shifts.
The data necessary to assess our argument is compiled into six essential pieces of data:
Statistics of resource endowment, detailing which resource each country has and the percent of exports
GDP growth (and reductions) since exporting natural resources
GDP per capita growth (and reductions) since exporting natural resources
Prices of the natural resources before and after exportation
Government rents from natural resources and their factor of total GDP/production
Exports and Natural Resource Exports as a percentage of Total GDP
These six factors will demonstrate how the exchange of natural resources has changed in recent years and how developing economies have responded. As outlined above, our goal is to compare the data on the total production of natural resources to GDP per capita and total GDP growth to measure whether correlations exist between the two variables. The prices of the resources and the government rents will serve as control variables, to test whether extreme variation in GDP comes from internal or external factors. Due to a large number of confounding variables, we chose two external factors (price and government rents) to measure internal and external pressure on the market at all times.
Ultimately, these variables will address the factors of economic growth and demonstrate how resource-rich countries are at a unique disadvantage: despite an ingrained source for wealth, the countries are failing to develop or to grow.
Most of our data can be sources from either OEC, the IMF, and the World Bank. However, some data is incomplete or unreliable. By using international market price and reported government rents of minerals, we hope to limit the effect of unreliable information.
With our data, we intend to demonstrate four main correlations.
Economic logic suggests that increase exports is linked to GDP growth. Therefore, a negative or neutral correlation between GDP growth and natural resource exports would illustrate some negative pressure from natural resources on GDP.
We plan to run regression to determine a correlation between natural resources as a percent of exports and GDP growth both average for countries and over time. We will also run a correlation between exports and GDP per capita growth. Ideally, both will demonstrate that peaks of prices are correlated with dips in GDP (and GDPPC) growth.
Again, economic logic would suggest that increasing GDP and increased natural resources exports would benefit the country's population. A negative or neutral correlation suggests that the increased revenues do not go to the people, but go somewhere else. If GDPPC is stagnant, this suggests limited development and growth.
We plan to run regression between prices of natural resources and GDP growth, as well as a regression for prices and GDP per capita growth. A negative correlation for both would support our hypothesis.
Given that natural resource have a negative pressure on GDP growth and GDPPC is stagnant, where does that extra income go? Demonstrating a correlation between natural resource dependence and rents will illustrate that in some way, governments benefit from increase prices rather than the people. Therefore, government rents would be detrimental to development and growth.
We plan to run regressions between prices of natural resources and government rent growth, as well as a regression for resource endowment as a percentage of exports and rent growth. It is crucially import to note that we plan to use region as a control variable for these regressions. Regions that are more authoritarian than others (like the Middle East) will naturally have higher resource rents than democratic regions (like Europe or Africa). However, all regions should show negative trends. Therefore, by keeping region as a control variable, we will ensure that no data is skewed by government type or regional diversity.
and lastly,
Using the data compiled previously, we hope to illustrate how resource endowment has an overwhelmingly negative impact of GDP growth and GDPPC growth. These variables demonstrate the various factors of the economy which are influenced by resource endowment and those which are negatively impacted.
Our outputs will be linear regression dynamic models and several R2 data analyses. Particularly for regressions over time, we intend to use linear regressions to show correlations between variables.
We chose our countries from the IMF(2012) Data set. These countries were chosen as "resource-rich" as natural resources account for 20%+ of exports or 20%+ of fiscal revenue.
This data set is organized by GNI per capita from lowest to highest. We excluded the rising natural resource exporters due to a lack of reliable information across several data banks. Information not included in the IMF Data Set was acquired through OEC data banks.
Based on some of our preliminary regression, some countries are still missing information despite using multiple resources. For the final project, we hope to find some of the missing data. Otherwise, we will note which countries are missing. We speculate the some of the missing data is either due to government secrecy or inaccessibility to information in smaller or more authoritarian countries.
#Importing
# Basic Packages
from __future__ import division
import os
from datetime import datetime
# Web & file access
import requests
import io
# Import display options for showing websites
from IPython.display import IFrame, HTML
# Plotting
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.ticker as mtick
%pylab --no-import-all
%matplotlib inline
import seaborn as sns
sns.set(rc={'figure.figsize':(11.7,8.27)})
sns.set_context("talk")
import plotly.express as px
import plotly.graph_objects as go
from plotnine import ggplot, geom_point, aes, stat_smooth, facet_wrap
# Data
import pandas as pd
import numpy as np
from pandas_datareader import data, wb
# GIS & maps
import geopandas as gpd
gp = gpd
import georasters as gr
import geoplot as gplt
import geoplot.crs as gcrs
import mapclassify as mc
import textwrap
import statsmodels.api as sm
from stargazer.stargazer import Stargazer, LineLocation
# Data Munging
from itertools import product, combinations
import difflib
import pycountry
import geocoder
from geonamescache.mappers import country
mapper = country(from_key='name', to_key='iso3')
mapper2 = country(from_key='iso3', to_key='iso')
mapper3 = country(from_key='iso3', to_key='name')
# Regressions & Stats
from scipy.stats import norm
import statsmodels.formula.api as smf
Using matplotlib backend: QtAgg Populating the interactive namespace from numpy and matplotlib
countryprelimdata = (['Congo, Dem. Rep', 'COD', 'Minerals & Oil', 94, 'Dependent'],
['Liberia', 'LBR', 'Gold/Iron Ore', 35, 'Medium'],
['Niger', 'NER', 'Gold/Oil/Uranium', 79, 'Dependent'],
['Guinea', 'GIN', 'Mining Products', 93, 'Dependent'],
['Mali', 'MLI', 'Gold', 75, 'High'],
['Chad', 'TCD', 'Oil', 89, 'Dependent'],
['Mauritania', 'MRT', 'Iron Ore', 24, 'Medium'],
['Lao PDR', 'LAO', 'Copper & Gold', 57, 'High'],
['Zambia', 'ZMB', 'Copper', 72, 'High'],
['Vietnam', 'VNM', 'Oil', 14, 'Low'],
['Yemen', 'YEM', 'Oil', 82, 'Dependent'],
['Nigeria', 'NGA', 'Oil', 97, 'Dependent'],
['Cameroon', 'CMR', 'Oil', 47, 'Medium'],
['Papua New Guinea', 'PNG', 'Oil/Copper/Gold', 77, 'Dependent'],
['Sudan', 'SDN', 'Oil', 97, 'Dependent'],
['Uzbekistan', 'UZB', 'Gold/Oil', 54, 'High'],
['Cote d\'Ivoire', 'CIV', 'Oil/Gold', 17, 'Low'],
['Bolivia', 'BOL', 'Oil', 74, 'High'],
['Mongolia', 'MNG', 'Copper', 81, 'Dependent'],
['Congo, Rep. of', 'COG', 'Oil', 90, 'Dependent'],
['Iraq', 'IRQ', 'Oil', 99, 'Dependent'],
['Indonesia', 'IDN', 'Oil', 10, 'Low'],
['Timor Leste', 'TLS', 'Oil', 99, 'Dependent'],
['Syrian Arab Republic', 'SYR', 'Oil', 36, 'Medium'],
['Guyana', 'GUY', 'Gold & Bauxite', 42, 'Medium'],
['Turkmenistan', 'TKM', 'Oil', 91, 'Dependent'],
['Angola', 'AGO', 'Oil', 95, 'Dependent'],
['Gabon', 'GAB', 'Oil', 83, 'Dependent'],
['Equatorial Guinea', 'GNQ', 'Oil', 99, 'Dependent'],
['Ecuador', 'ECU', 'Oil', 55, 'High'],
['Albania', 'ALB', 'Oil', 10, 'Low'],
['Algeria', 'DZA', 'Oil', 98, 'Dependent'],
['South Africa', 'ZAF', 'Minerals', 55, 'High'],
['Iran', 'AZE', 'Oil', 94, 'Dependent'],
['Peru', 'PER', 'Minerals', 48, 'Medium'],
['Brazil', 'BRA', 'Oil/Iron', 26, 'Low'],
['Azerbaijan', 'AZE', 'Oil', 94, 'Dependent'],
['Botswana', 'BWA', 'Diamonds', 66, 'High'],
['Kazakhstan', 'KAZ', 'Oil', 60, 'High'],
['Suriname', 'SUR', 'Minerals', 11, 'Low'],
['Mexico', 'MEX', 'Oil', 15, 'Low'],
['Russia', 'RUS', 'Oil/Minerals', 61, 'High'],
['Chile', 'CHL', 'Copper', 53, 'High'],
['Venezuela', 'VEN', 'Oil', 93, 'Dependent'],
['Libya', 'LBY', 'Oil', 97, 'Dependent'],
['Bahrain', 'BHR', 'Oil', 96, 'Dependent'],
['Brunei Darussalam', 'BRN', 'Oil', 87, 'Dependent'],
['Trinidad and Tobago', 'TTO', 'Oil', 38, 'Medium'],
['Saudi Arabia', 'SAU', 'Oil', 87, 'Dependent'],
['Oman', 'OMN', 'Oil', 73, 'High'],
['United Arab Emirates', 'UAE', 'Oil', 41, 'Medium'],
['Qatar', 'QAT', 'Oil', 88, 'Dependent'],
['Norway', 'NOR', 'Oil', 62, 'High'])
cpd = pd.DataFrame(countryprelimdata, columns=['Country Name', 'iso3c', 'Exports', 'NR_TE', 'Dependence_Deg'])
#NR_TE represents natural resources as a percentage of total exports
# our list of countries and their primary exports
cpd
| Country Name | iso3c | Exports | NR_TE | Dependence_Deg | |
|---|---|---|---|---|---|
| 0 | Congo, Dem. Rep | COD | Minerals & Oil | 94 | Dependent |
| 1 | Liberia | LBR | Gold/Iron Ore | 35 | Medium |
| 2 | Niger | NER | Gold/Oil/Uranium | 79 | Dependent |
| 3 | Guinea | GIN | Mining Products | 93 | Dependent |
| 4 | Mali | MLI | Gold | 75 | High |
| 5 | Chad | TCD | Oil | 89 | Dependent |
| 6 | Mauritania | MRT | Iron Ore | 24 | Medium |
| 7 | Lao PDR | LAO | Copper & Gold | 57 | High |
| 8 | Zambia | ZMB | Copper | 72 | High |
| 9 | Vietnam | VNM | Oil | 14 | Low |
| 10 | Yemen | YEM | Oil | 82 | Dependent |
| 11 | Nigeria | NGA | Oil | 97 | Dependent |
| 12 | Cameroon | CMR | Oil | 47 | Medium |
| 13 | Papua New Guinea | PNG | Oil/Copper/Gold | 77 | Dependent |
| 14 | Sudan | SDN | Oil | 97 | Dependent |
| 15 | Uzbekistan | UZB | Gold/Oil | 54 | High |
| 16 | Cote d'Ivoire | CIV | Oil/Gold | 17 | Low |
| 17 | Bolivia | BOL | Oil | 74 | High |
| 18 | Mongolia | MNG | Copper | 81 | Dependent |
| 19 | Congo, Rep. of | COG | Oil | 90 | Dependent |
| 20 | Iraq | IRQ | Oil | 99 | Dependent |
| 21 | Indonesia | IDN | Oil | 10 | Low |
| 22 | Timor Leste | TLS | Oil | 99 | Dependent |
| 23 | Syrian Arab Republic | SYR | Oil | 36 | Medium |
| 24 | Guyana | GUY | Gold & Bauxite | 42 | Medium |
| 25 | Turkmenistan | TKM | Oil | 91 | Dependent |
| 26 | Angola | AGO | Oil | 95 | Dependent |
| 27 | Gabon | GAB | Oil | 83 | Dependent |
| 28 | Equatorial Guinea | GNQ | Oil | 99 | Dependent |
| 29 | Ecuador | ECU | Oil | 55 | High |
| 30 | Albania | ALB | Oil | 10 | Low |
| 31 | Algeria | DZA | Oil | 98 | Dependent |
| 32 | South Africa | ZAF | Minerals | 55 | High |
| 33 | Iran | AZE | Oil | 94 | Dependent |
| 34 | Peru | PER | Minerals | 48 | Medium |
| 35 | Brazil | BRA | Oil/Iron | 26 | Low |
| 36 | Azerbaijan | AZE | Oil | 94 | Dependent |
| 37 | Botswana | BWA | Diamonds | 66 | High |
| 38 | Kazakhstan | KAZ | Oil | 60 | High |
| 39 | Suriname | SUR | Minerals | 11 | Low |
| 40 | Mexico | MEX | Oil | 15 | Low |
| 41 | Russia | RUS | Oil/Minerals | 61 | High |
| 42 | Chile | CHL | Copper | 53 | High |
| 43 | Venezuela | VEN | Oil | 93 | Dependent |
| 44 | Libya | LBY | Oil | 97 | Dependent |
| 45 | Bahrain | BHR | Oil | 96 | Dependent |
| 46 | Brunei Darussalam | BRN | Oil | 87 | Dependent |
| 47 | Trinidad and Tobago | TTO | Oil | 38 | Medium |
| 48 | Saudi Arabia | SAU | Oil | 87 | Dependent |
| 49 | Oman | OMN | Oil | 73 | High |
| 50 | United Arab Emirates | UAE | Oil | 41 | Medium |
| 51 | Qatar | QAT | Oil | 88 | Dependent |
| 52 | Norway | NOR | Oil | 62 | High |
# Paths
pathout = './data/'
if not os.path.exists(pathout):
os.mkdir(pathout)
pathgraphs = './graphs/'
if not os.path.exists(pathgraphs):
os.mkdir(pathgraphs)
currentYear = datetime.now().year
year = min(2020, currentYear-2)
wbcountries = wb.get_countries()
wbcountries = wbcountries.loc[wbcountries.region.isin(['Aggregates'])==False].reset_index(drop=True)
wbcountries['name'] = wbcountries.name.str.strip()
wbcountries['incomeLevel'] = wbcountries['incomeLevel'].str.title()
wbcountries.loc[wbcountries.iso3c=='VEN', 'incomeLevel'] = 'Upper Middle Income'
wdi_indicators = ['NY.GDP.MKTP.KD.ZG', 'NY.GDP.PCAP.KD.ZG', 'NY.GDP.PETR.RT.ZS', 'NE.EXP.GNFS.ZS', 'NY.GDP.TOTL.RT.ZS', 'NY.GDP.PCAP.PP.KD', 'EP.PMP.SGAS.CD']
pop_vars = wb.search(string='population')
pop_vars.head()
| id | name | unit | source | sourceNote | sourceOrganization | topics | |
|---|---|---|---|---|---|---|---|
| 24 | 1.1_ACCESS.ELECTRICITY.TOT | Access to electricity (% of total population) | Sustainable Energy for All | Access to electricity is the percentage of pop... | b'World Bank Global Electrification Database 2... | ||
| 39 | 1.2_ACCESS.ELECTRICITY.RURAL | Access to electricity (% of rural population) | Sustainable Energy for All | Access to electricity is the percentage of rur... | b'World Bank Global Electrification Database 2... | ||
| 40 | 1.3_ACCESS.ELECTRICITY.URBAN | Access to electricity (% of urban population) | Sustainable Energy for All | Access to electricity is the percentage of tot... | b'World Bank Global Electrification Database 2... | ||
| 164 | 2.1_ACCESS.CFT.TOT | Access to Clean Fuels and Technologies for coo... | Sustainable Energy for All | b'' | |||
| 195 | 3.11.01.01.popcen | Population census | Statistical Capacity Indicators | Population censuses collect data on the size, ... | b'World Bank Microdata library. Original sourc... |
wdi = wb.download(indicator=wdi_indicators, country=wbcountries.iso2c.values, start=1950, end=year)
wdi = wdi.reset_index()
wdi['year'] = wdi.year.astype(int)
#GDP Per Capita
wdi['gdp_pc'] = wdi['NY.GDP.PCAP.PP.KD']
wdi['ln_gdppc']= wdi['gdp_pc'].apply(np.log)
#GDP growth annually
wdi['GDP_grow'] = wdi['NY.GDP.MKTP.KD.ZG']
wdi['ln_GDP_grow'] = wdi['NY.GDP.MKTP.KD.ZG'].apply(np.log)
#GPD Per Capita growth annually
wdi['GDPPC_grow'] = wdi['NY.GDP.PCAP.KD.ZG']
#Oil Rents as a percentage of GDP
wdi['OR'] = wdi['NY.GDP.PETR.RT.ZS']
wdi['ln_OR'] = wdi['OR'].apply(np.log)
#Natural resource rents as a percentage of GDP
wdi['NRR'] = wdi['NY.GDP.TOTL.RT.ZS']
wdi['ln_NRR']=wdi['NY.GDP.TOTL.RT.ZS'].apply(np.log)
#Exports as a percentage of GDP
wdi['Exports_TR'] = wdi['NE.EXP.GNFS.ZS']
#Price of Oil
wdi['POil'] = wdi['EP.PMP.SGAS.CD']
wdi['POil_chg']=wdi['POil'].pct_change()
wdi
C:\Users\skand\anaconda3\envs\EconGrowthUG-Builds-Windows-pip\lib\site-packages\pandas_datareader\wb.py:592: UserWarning: Non-standard ISO country codes: JG, XK
| country | year | NY.GDP.MKTP.KD.ZG | NY.GDP.PCAP.KD.ZG | NY.GDP.PETR.RT.ZS | NE.EXP.GNFS.ZS | NY.GDP.TOTL.RT.ZS | NY.GDP.PCAP.PP.KD | EP.PMP.SGAS.CD | gdp_pc | ... | GDP_grow | ln_GDP_grow | GDPPC_grow | OR | ln_OR | NRR | ln_NRR | Exports_TR | POil | POil_chg | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Aruba | 2020 | -22.318948 | -22.650725 | NaN | 56.545088 | NaN | 29563.756955 | NaN | 29563.756955 | ... | -22.318948 | NaN | -22.650725 | NaN | NaN | NaN | NaN | 56.545088 | NaN | NaN |
| 1 | Aruba | 2019 | -2.085600 | -2.512957 | NaN | 74.582278 | NaN | 38221.117314 | NaN | 38221.117314 | ... | -2.085600 | NaN | -2.512957 | NaN | NaN | NaN | NaN | 74.582278 | NaN | NaN |
| 2 | Aruba | 2018 | 1.267218 | 0.803198 | 0.0 | 73.796232 | 0.001875 | 39206.356147 | NaN | 39206.356147 | ... | 1.267218 | 0.236824 | 0.803198 | 0.0 | -inf | 0.001875 | -6.279193 | 73.796232 | NaN | NaN |
| 3 | Aruba | 2017 | 5.482371 | 4.985800 | 0.0 | 72.556459 | 0.002827 | 38893.960556 | NaN | 38893.960556 | ... | 5.482371 | 1.701538 | 4.985800 | 0.0 | -inf | 0.002827 | -5.868554 | 72.556459 | NaN | NaN |
| 4 | Aruba | 2016 | 2.116716 | 1.604501 | 0.0 | 71.821756 | 0.003344 | 37046.877414 | NaN | 37046.877414 | ... | 2.116716 | 0.749866 | 1.604501 | 0.0 | -inf | 0.003344 | -5.700610 | 71.821756 | NaN | NaN |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 13232 | Zimbabwe | 1964 | -1.106172 | -4.403385 | NaN | NaN | NaN | NaN | NaN | NaN | ... | -1.106172 | NaN | -4.403385 | NaN | NaN | NaN | NaN | NaN | NaN | 0.0 |
| 13233 | Zimbabwe | 1963 | 6.244345 | 2.697117 | NaN | NaN | NaN | NaN | NaN | NaN | ... | 6.244345 | 1.831676 | 2.697117 | NaN | NaN | NaN | NaN | NaN | NaN | 0.0 |
| 13234 | Zimbabwe | 1962 | 1.434471 | -1.934893 | NaN | NaN | NaN | NaN | NaN | NaN | ... | 1.434471 | 0.360796 | -1.934893 | NaN | NaN | NaN | NaN | NaN | NaN | 0.0 |
| 13235 | Zimbabwe | 1961 | 6.316157 | 2.821534 | NaN | NaN | NaN | NaN | NaN | NaN | ... | 6.316157 | 1.843111 | 2.821534 | NaN | NaN | NaN | NaN | NaN | NaN | 0.0 |
| 13236 | Zimbabwe | 1960 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 0.0 |
13237 rows × 21 columns
wdi = wbcountries.merge(wdi, left_on='name', right_on='country')
wdi
| iso3c | iso2c | name | region | adminregion | incomeLevel | lendingType | capitalCity | longitude | latitude | ... | GDP_grow | ln_GDP_grow | GDPPC_grow | OR | ln_OR | NRR | ln_NRR | Exports_TR | POil | POil_chg | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | ABW | AW | Aruba | Latin America & Caribbean | High Income | Not classified | Oranjestad | -70.0167 | 12.5167 | ... | -22.318948 | NaN | -22.650725 | NaN | NaN | NaN | NaN | 56.545088 | NaN | NaN | |
| 1 | ABW | AW | Aruba | Latin America & Caribbean | High Income | Not classified | Oranjestad | -70.0167 | 12.5167 | ... | -2.085600 | NaN | -2.512957 | NaN | NaN | NaN | NaN | 74.582278 | NaN | NaN | |
| 2 | ABW | AW | Aruba | Latin America & Caribbean | High Income | Not classified | Oranjestad | -70.0167 | 12.5167 | ... | 1.267218 | 0.236824 | 0.803198 | 0.0 | -inf | 0.001875 | -6.279193 | 73.796232 | NaN | NaN | |
| 3 | ABW | AW | Aruba | Latin America & Caribbean | High Income | Not classified | Oranjestad | -70.0167 | 12.5167 | ... | 5.482371 | 1.701538 | 4.985800 | 0.0 | -inf | 0.002827 | -5.868554 | 72.556459 | NaN | NaN | |
| 4 | ABW | AW | Aruba | Latin America & Caribbean | High Income | Not classified | Oranjestad | -70.0167 | 12.5167 | ... | 2.116716 | 0.749866 | 1.604501 | 0.0 | -inf | 0.003344 | -5.700610 | 71.821756 | NaN | NaN | |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 13232 | ZWE | ZW | Zimbabwe | Sub-Saharan Africa | Sub-Saharan Africa (excluding high income) | Lower Middle Income | Blend | Harare | 31.0672 | -17.8312 | ... | -1.106172 | NaN | -4.403385 | NaN | NaN | NaN | NaN | NaN | NaN | 0.0 |
| 13233 | ZWE | ZW | Zimbabwe | Sub-Saharan Africa | Sub-Saharan Africa (excluding high income) | Lower Middle Income | Blend | Harare | 31.0672 | -17.8312 | ... | 6.244345 | 1.831676 | 2.697117 | NaN | NaN | NaN | NaN | NaN | NaN | 0.0 |
| 13234 | ZWE | ZW | Zimbabwe | Sub-Saharan Africa | Sub-Saharan Africa (excluding high income) | Lower Middle Income | Blend | Harare | 31.0672 | -17.8312 | ... | 1.434471 | 0.360796 | -1.934893 | NaN | NaN | NaN | NaN | NaN | NaN | 0.0 |
| 13235 | ZWE | ZW | Zimbabwe | Sub-Saharan Africa | Sub-Saharan Africa (excluding high income) | Lower Middle Income | Blend | Harare | 31.0672 | -17.8312 | ... | 6.316157 | 1.843111 | 2.821534 | NaN | NaN | NaN | NaN | NaN | NaN | 0.0 |
| 13236 | ZWE | ZW | Zimbabwe | Sub-Saharan Africa | Sub-Saharan Africa (excluding high income) | Lower Middle Income | Blend | Harare | 31.0672 | -17.8312 | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 0.0 |
13237 rows × 31 columns
# merging data to create one complete data set
compdat = cpd.merge(wdi, how="inner", on=["iso3c"])
compdat = compdat.drop(['iso2c', 'adminregion', 'NY.GDP.MKTP.KD.ZG',
'NY.GDP.PCAP.KD.ZG', 'NY.GDP.PETR.RT.ZS', 'NE.EXP.GNFS.ZS', 'NY.GDP.TOTL.RT.ZS',
'latitude', 'longitude', 'name', 'capitalCity', 'lendingType', 'country',
'NY.GDP.PCAP.PP.KD', 'EP.PMP.SGAS.CD'], axis=1)
compdat.loc[compdat.year==2015].count()
Country Name 52 iso3c 52 Exports 52 NR_TE 52 Dependence_Deg 52 region 52 incomeLevel 52 year 52 gdp_pc 49 ln_gdppc 49 GDP_grow 51 ln_GDP_grow 40 GDPPC_grow 51 OR 51 ln_OR 51 NRR 51 ln_NRR 51 Exports_TR 45 POil 0 POil_chg 52 dtype: int64
compdat.dtypes
Country Name object iso3c object Exports object NR_TE int64 Dependence_Deg object region object incomeLevel object year int32 gdp_pc float64 ln_gdppc float64 GDP_grow float64 ln_GDP_grow float64 GDPPC_grow float64 OR float64 ln_OR float64 NRR float64 ln_NRR float64 Exports_TR float64 POil float64 POil_chg float64 dtype: object
compdat
| Country Name | iso3c | Exports | NR_TE | Dependence_Deg | region | incomeLevel | year | gdp_pc | ln_gdppc | GDP_grow | ln_GDP_grow | GDPPC_grow | OR | ln_OR | NRR | ln_NRR | Exports_TR | POil | POil_chg | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Congo, Dem. Rep | COD | Minerals & Oil | 94 | Dependent | Sub-Saharan Africa | Low Income | 2020 | 1082.445242 | 6.986978 | 1.735423 | 0.551251 | -1.412051 | 0.500318 | -0.692512 | 14.884275 | 2.700305 | 28.604587 | NaN | 0.000000 |
| 1 | Congo, Dem. Rep | COD | Minerals & Oil | 94 | Dependent | Sub-Saharan Africa | Low Income | 2019 | 1097.948840 | 7.001199 | 4.384529 | 1.478082 | 1.110160 | 0.749021 | -0.288988 | 13.773919 | 2.622777 | 25.756239 | NaN | 0.000000 |
| 2 | Congo, Dem. Rep | COD | Minerals & Oil | 94 | Dependent | Sub-Saharan Africa | Low Income | 2018 | 1085.893688 | 6.990159 | 5.821121 | 1.761493 | 2.461093 | 0.928356 | -0.074340 | 17.930273 | 2.886491 | 33.807350 | NaN | 0.000000 |
| 3 | Congo, Dem. Rep | COD | Minerals & Oil | 94 | Dependent | Sub-Saharan Africa | Low Income | 2017 | 1059.810762 | 6.965846 | 3.726948 | 1.315590 | 0.401474 | 0.577089 | -0.549759 | 24.682857 | 3.206109 | 30.690155 | NaN | 0.000000 |
| 4 | Congo, Dem. Rep | COD | Minerals & Oil | 94 | Dependent | Sub-Saharan Africa | Low Income | 2016 | 1055.572915 | 6.961839 | 2.399399 | 0.875218 | -0.907724 | 0.321911 | -1.133480 | 20.587359 | 3.024677 | 32.787860 | 1.49 | 1.191176 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 3167 | Norway | NOR | Oil | 62 | High | Europe & Central Asia | High Income | 1964 | NaN | NaN | 5.009651 | 1.611366 | 4.219394 | NaN | NaN | NaN | NaN | NaN | NaN | 0.000000 |
| 3168 | Norway | NOR | Oil | 62 | High | Europe & Central Asia | High Income | 1963 | NaN | NaN | 3.785043 | 1.331057 | 3.003259 | NaN | NaN | NaN | NaN | NaN | NaN | 0.000000 |
| 3169 | Norway | NOR | Oil | 62 | High | Europe & Central Asia | High Income | 1962 | NaN | NaN | 2.813945 | 1.034587 | 1.991246 | NaN | NaN | NaN | NaN | NaN | NaN | 0.000000 |
| 3170 | Norway | NOR | Oil | 62 | High | Europe & Central Asia | High Income | 1961 | NaN | NaN | 6.273336 | 1.836308 | 5.432493 | NaN | NaN | NaN | NaN | NaN | NaN | 0.000000 |
| 3171 | Norway | NOR | Oil | 62 | High | Europe & Central Asia | High Income | 1960 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 0.000000 |
3172 rows × 20 columns
#Oil Specific Data - focuses on countries with oil rents greater than 5%
oildat = cpd.merge(wdi, how="inner", on=["iso3c"])
oildat = oildat.drop(['iso2c', 'adminregion', 'NY.GDP.MKTP.KD.ZG',
'NY.GDP.PCAP.KD.ZG', 'NY.GDP.PETR.RT.ZS', 'NE.EXP.GNFS.ZS', 'NY.GDP.TOTL.RT.ZS',
'latitude', 'longitude', 'name', 'capitalCity', 'lendingType', 'country',
'NY.GDP.PCAP.PP.KD', 'EP.PMP.SGAS.CD'], axis=1)
oildat = oildat[oildat.OR > 1]
oildat
| Country Name | iso3c | Exports | NR_TE | Dependence_Deg | region | incomeLevel | year | gdp_pc | ln_gdppc | GDP_grow | ln_GDP_grow | GDPPC_grow | OR | ln_OR | NRR | ln_NRR | Exports_TR | POil | POil_chg | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 6 | Congo, Dem. Rep | COD | Minerals & Oil | 94 | Dependent | Sub-Saharan Africa | Low Income | 2014 | 1029.790813 | 6.937111 | 9.470288 | 2.248159 | 5.895884 | 1.116515 | 0.110212 | 24.616335 | 3.203410 | 36.832189 | 1.68 | 0.127517 |
| 7 | Congo, Dem. Rep | COD | Minerals & Oil | 94 | Dependent | Sub-Saharan Africa | Low Income | 2013 | 972.455934 | 6.879825 | 8.481957 | 2.137941 | 4.927570 | 1.468049 | 0.383934 | 25.478817 | 3.237847 | 36.445861 | NaN | 0.000000 |
| 8 | Congo, Dem. Rep | COD | Minerals & Oil | 94 | Dependent | Sub-Saharan Africa | Low Income | 2012 | 926.787816 | 6.831725 | 7.086899 | 1.958248 | 3.571784 | 1.806321 | 0.591292 | 26.853521 | 3.290397 | 30.803009 | 1.48 | -0.119048 |
| 9 | Congo, Dem. Rep | COD | Minerals & Oil | 94 | Dependent | Sub-Saharan Africa | Low Income | 2011 | 894.826545 | 6.796630 | 6.874671 | 1.927844 | 3.366413 | 2.126667 | 0.754556 | 28.572952 | 3.352461 | 39.515617 | NaN | 0.000000 |
| 10 | Congo, Dem. Rep | COD | Minerals & Oil | 94 | Dependent | Sub-Saharan Africa | Low Income | 2010 | 865.684040 | 6.763520 | 7.107977 | 1.961218 | 3.598839 | 1.788415 | 0.581330 | 25.946539 | 3.256038 | 41.111154 | 1.28 | -0.135135 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 3152 | Norway | NOR | Oil | 62 | High | Europe & Central Asia | High Income | 1979 | NaN | NaN | 4.372460 | 1.475326 | 4.017608 | 3.859987 | 1.350664 | 5.366026 | 1.680088 | 39.253048 | NaN | 0.000000 |
| 3153 | Norway | NOR | Oil | 62 | High | Europe & Central Asia | High Income | 1978 | NaN | NaN | 3.869406 | 1.353101 | 3.473601 | 1.634957 | 0.491616 | 2.363321 | 0.860068 | 35.982910 | NaN | 0.000000 |
| 3154 | Norway | NOR | Oil | 62 | High | Europe & Central Asia | High Income | 1977 | NaN | NaN | 4.160747 | 1.425695 | 3.721429 | 1.449441 | 0.371178 | 1.777636 | 0.575284 | 34.285507 | NaN | 0.000000 |
| 3155 | Norway | NOR | Oil | 62 | High | Europe & Central Asia | High Income | 1976 | NaN | NaN | 5.825393 | 1.762227 | 5.330220 | 1.517877 | 0.417313 | 1.942708 | 0.664083 | 35.970508 | NaN | 0.000000 |
| 3156 | Norway | NOR | Oil | 62 | High | Europe & Central Asia | High Income | 1975 | NaN | NaN | 4.952148 | 1.599821 | 4.374524 | 1.005782 | 0.005765 | 1.422679 | 0.352541 | 36.102043 | NaN | 0.000000 |
1500 rows × 20 columns
Note: Some of the data is questionable. For example, the GDP growth of Guyana is averaged at 40% and Brunei has a GDPPC higher than both Norway and the United States. When necessary, this data is emphasized as outliers. Otherwise, the data is assumed to be reliable.
Also, each dynamic chart has a png copy beneath it for ease of reading when using the html file.
dffig = compdat.loc[compdat.year==year]\
.dropna(subset=['NR_TE', 'GDP_grow', 'gdp_pc'])\
.sort_values(by='region').reset_index()
mod = smf.ols(formula='NR_TE ~ GDP_grow', data=dffig, missing='drop').fit()
mod.summary2()
| Model: | OLS | Adj. R-squared: | -0.016 |
| Dependent Variable: | NR_TE | AIC: | 462.2619 |
| Date: | 2022-11-26 16:17 | BIC: | 466.0043 |
| No. Observations: | 48 | Log-Likelihood: | -229.13 |
| Df Model: | 1 | F-statistic: | 0.2680 |
| Df Residuals: | 46 | Prob (F-statistic): | 0.607 |
| R-squared: | 0.006 | Scale: | 855.60 |
| Coef. | Std.Err. | t | P>|t| | [0.025 | 0.975] | |
|---|---|---|---|---|---|---|
| Intercept | 65.2929 | 4.4252 | 14.7548 | 0.0000 | 56.3855 | 74.2004 |
| GDP_grow | -0.2549 | 0.4925 | -0.5176 | 0.6072 | -1.2462 | 0.7364 |
| Omnibus: | 5.823 | Durbin-Watson: | 1.870 |
| Prob(Omnibus): | 0.054 | Jarque-Bera (JB): | 4.588 |
| Skew: | -0.640 | Prob(JB): | 0.101 |
| Kurtosis: | 2.190 | Condition No.: | 9 |
dffig2 = oildat.loc[oildat.year==year]\
.dropna(subset=['NR_TE', 'GDP_grow', 'gdp_pc', 'OR'])\
.sort_values(by='region').reset_index()
mod = smf.ols(formula='NR_TE ~ GDP_grow', data=dffig2, missing='drop').fit()
mod.summary2()
| Model: | OLS | Adj. R-squared: | -0.027 |
| Dependent Variable: | NR_TE | AIC: | 298.7369 |
| Date: | 2022-11-26 16:17 | BIC: | 301.6049 |
| No. Observations: | 31 | Log-Likelihood: | -147.37 |
| Df Model: | 1 | F-statistic: | 0.2151 |
| Df Residuals: | 29 | Prob (F-statistic): | 0.646 |
| R-squared: | 0.007 | Scale: | 842.57 |
| Coef. | Std.Err. | t | P>|t| | [0.025 | 0.975] | |
|---|---|---|---|---|---|---|
| Intercept | 71.7513 | 5.4475 | 13.1715 | 0.0000 | 60.6099 | 82.8926 |
| GDP_grow | -0.2396 | 0.5166 | -0.4638 | 0.6463 | -1.2962 | 0.8170 |
| Omnibus: | 6.282 | Durbin-Watson: | 1.079 |
| Prob(Omnibus): | 0.043 | Jarque-Bera (JB): | 5.714 |
| Skew: | -1.050 | Prob(JB): | 0.057 |
| Kurtosis: | 2.895 | Condition No.: | 11 |
Between these two data analysis, we can see that natural resources as a percent of total exports has a nul negative effect on resource rich countries in general (the slope is negative but p>.6). However, for oil rich countries, there is a negative correlation of natural resources on GDP growth. The slope is -.8 and the p value is <.005. This means there is a significant negative effect of oil exports on GDP growth. However, the data only explains about 40% of the data (R^2=.387). We will look further into the data to find other sources for a negative correlation.
symbols = ['circle', 'x', 'square', 'cross', 'diamond', 'star-diamond', 'triangle-up']
fig1 = px.scatter(dffig,
x="Exports_TR",
y="GDP_grow",
color='region',
symbol='region',
symbol_sequence=symbols,
hover_name='Country Name',
hover_data=['iso3c', 'Exports_TR', 'GDP_grow'],
size='gdp_pc',
size_max=20,
trendline="ols",
trendline_scope="overall",
trendline_color_override="black",
labels={
"Exports_TR": "Total Exports as a Percentage of GDP",
"GDP_grow": "GDP Growth",
"region": "WB Region",
"gdp_pc": "GDP Per Capita"
},
opacity=0.75,
height=800,
)
fig1.show()
symbols = ['circle', 'x', 'square', 'cross', 'diamond', 'star-diamond', 'triangle-up']
fig2 = px.scatter(dffig,
x="NR_TE",
y="GDP_grow",
color='region',
symbol='region',
symbol_sequence=symbols,
hover_name='Country Name',
hover_data=['iso3c', 'NR_TE', 'GDP_grow'],
size='gdp_pc',
size_max=20,
trendline="ols",
trendline_scope="overall",
trendline_color_override="black",
labels={
"NR_TE": "Natural Resources as a Percentage of Total Exports",
"GDP_grow": "GDP Growth",
"region": "WB Region",
"gdp_pc": "GDP Per Capita"
},
opacity=0.75,
height=600,
)
fig2.show()
symbols = ['circle', 'x', 'square', 'cross', 'diamond', 'star-diamond', 'triangle-up']
fig3 = px.scatter(dffig,
x="Exports_TR",
y="GDPPC_grow",
color='region',
symbol='region',
symbol_sequence=symbols,
hover_name='Country Name',
hover_data=['iso3c', 'Exports_TR', 'gdp_pc', 'GDPPC_grow'],
size='gdp_pc',
size_max=20,
trendline="ols",
trendline_scope="overall",
trendline_color_override="black",
labels={
"Exports_TR": "Total Exports as a Percentage of GDP",
"GDPPC_grow": "GDP Per Capita Growth",
"region": "WB Region",
"gdp_pc": "GDP Per Capita"
},
opacity=0.75,
height=600,
)
fig3.show()
symbols = ['circle', 'x', 'square', 'cross', 'diamond', 'star-diamond', 'triangle-up']
fig4 = px.scatter(dffig,
x="NR_TE",
y="GDPPC_grow",
color='region',
symbol='region',
symbol_sequence=symbols,
hover_name='Country Name',
hover_data=['iso3c', 'NR_TE', 'GDPPC_grow', 'gdp_pc'],
size='gdp_pc',
size_max=20,
trendline="ols",
trendline_scope="overall",
trendline_color_override="black",
labels={
"GDPPC_grow" : 'GDP Per Capita Growth',
"NR_TE": "Natural Resources as a Percentage of Total Exports",
"GDP_grow": "GDP Growth",
"region": "WB Region",
"gdp_pc": "GDP Per Capita"
},
opacity=0.75,
height=800,
)
fig4.show()
These two graphs are crucial to demonstrate how natural resources have a negative effect on GDP growth. Fig1 shows how exports are positively correlated with GDP; countries with higher export levels also have higher GDP growth. Fig2 demonstrates a unique caveat: natural resources are NOT positively correlated with GDP growth. Fig2 even suggests the opposite, as natural resource exports increase, GDP growth decreases. Even excluding some extreme outliers (like Guyana with GDP growth +43% avg and Libya with GDP growth -23% avg), there is a slight negative correlation between natural resource exports and GDP growth.
GDP per capita shows similar trends. As total exports increase, GDP per capita saw a slight increase. However, as natural resources exports increase, GDP per capita growth turns to a slight decrease. The visible differences between fig3 and fig 4 show that nautral resources have a negative effect on GDP growth.
It is also important to note that region plays a role in these effects. African and Middle Eastern countries are more negatively affected by resources, as they can be scattered around the OLS line for total exports, but as natural resource export increase, these two regions rank below the OLS. European countries are the least affected, as they consistently perform better than their regional counterparts for both GDP and GDPPC growth regardless of export specification.
Despite the correlation being weak, the change from a distinct positive correlation between all exports and GDP growth and the negative or neutral correlation between natural resource exports and GDP growth indicates natural resources have a negative pressure on GDP growth. This section demonstrates that natural resources have a clear negative effect on growth. The next sections will attempt to explain which factors are the most influential at preventing growth.
# Price of Oil from 1998 to 2016
url = 'https://data.worldbank.org/share/widget?indicators=EP.PMP.SGAS.CD'
IFrame(url, width=500, height=300)
def my_xy_line_plot(dfin,
x='year',
y='GDP_grow',
labelvar='iso3c',
dx=0.006125,
dy=0.006125,
xlogscale=False,
ylogscale=False,
xlabel='Time',
ylabel='GDP Growth',
labels=False,
xpct = False,
ypct = False,
OLS=False,
OLSlinelabel='OLS',
ssline=False,
sslinelabel='45 Degree Line',
filename='time-oil-gdp-growth.pdf',
hue='region',
hue_order=['East Asia & Pacific', 'Europe & Central Asia',
'Latin America & Caribbean ', 'Middle East & North Africa',
'North America', 'South Asia', 'Sub-Saharan Africa '],
style='Dependence_Deg',
style_order=['Dependent', 'High', 'Medium', 'Low'],
palette=True,
legend_fontsize=10,
label_fontsize=12,
loc=None,
save=True):
'''
Plot the association between x and var in dataframe using labelvar for labels.
'''
sns.set(rc={'figure.figsize':(11.7,8.27)})
sns.set_context("talk")
df = dfin.copy()
df = df.dropna(subset=[x, y]).reset_index(drop=True)
# Plot
k = 0
fig, ax = plt.subplots()
sns.lineplot(x=x, y=y, data=df, ax=ax,
hue=hue,
hue_order=hue_order,
alpha=1,
style=style,
style_order=style_order,
palette=palette,
)
if OLS:
sns.regplot(x=x, y=y, data=df, ax=ax, label=OLSlinelabel, scatter=False)
if ssline:
ax.plot([df[x].min()*.99, df[x].max()*1.01], [df[x].min()*.99, df[x].max()*1.01], c='r', label=sslinelabel)
if labels:
movex = df[x].mean() * dx
movey = df[y].mean() * dy
for line in range(0,df.shape[0]):
ax.text(df[x][line]+movex, df[y][line]+movey, df[labelvar][line], horizontalalignment='left', fontsize=label_fontsize, color='black')
ax.set_xlabel(xlabel)
ax.set_ylabel(ylabel)
if xpct:
fmt = '%.0f%%' # Format you want the ticks, e.g. '40%'
xticks = mtick.FormatStrFormatter(fmt)
ax.xaxis.set_major_formatter(xticks)
if ypct:
fmt = '%.0f%%' # Format you want the ticks, e.g. '40%'
yticks = mtick.FormatStrFormatter(fmt)
ax.yaxis.set_major_formatter(yticks)
if ylogscale:
ax.set(yscale="log")
if xlogscale:
ax.set(xscale="log")
handles, labels = ax.get_legend_handles_labels()
handles = np.array(handles)
labels = np.array(labels)
handles = list(handles[(labels!='region') & (labels!='incomeLevel')])
labels = list(labels[(labels!='region') & (labels!='incomeLevel')])
ax.legend(handles=handles, labels=labels, fontsize=legend_fontsize, loc=loc)
if save:
plt.savefig(pathgraphs + filename, dpi=300, bbox_inches='tight')
return fig
palette=sns.color_palette("Blues_r", oildat['Dependence_Deg'].unique().shape[0]+4)[:oildat['Dependence_Deg'].unique().shape[0]*2:2]
figtime = my_xy_line_plot(oildat,
x='year',
y='GDP_grow',
xlabel='Year',
ylabel='GDP Growth',
filename='time-gdp-grow.pdf',
hue='Dependence_Deg',
hue_order=['Dependent', 'High', 'Medium', 'Low'],
palette=palette,
OLS=False,
labels=False,
legend_fontsize=16,
loc='lower right',
save=False)
This graph demonstrates how different dependencies on oil react to price changes. Two time frames demonstrate these tendendcies best: between 1970 and 1990, and 2000 onward.
In the 1970s, many developing countries began nationlalizing their oil industries, skyrocketing the price of oil. Theoretically, oil dependent countries who now had a massive revenue increase and benefit from rising oil prices should also see a dramatic rise in GDP growth. However, figtime illustrates how GDP growth, particularly in the most dependendent countries with 75%+ of their GDP in oil revenues have dramatic rising and dips in the 1970s. We do see a rough maximum of growth in 1976 when oil prices were at their highest. However, the most dependent countries were the most erratic, bouncing between 10-20% growth and 0% growth. There is also a steady decline in GDP growth, finally resting around 0-5% for the entirety of the 1980s. This coincides with a the decline of oil prices, which reached a bottom in 1986. While we can assume that resource dependent countries roughly follow the trends of resource prices, higher levels of dependence directly correlate with GDP growth erraticism and unreliability. Countries with low dependence follow price trends well but with more steady growth and less extremes.
These hypotheses are further corroborated by the 2000s onward. As seen on the World Bank and FRED graph, the price of oil has been extremely erratic, on a steady rise until 2014, then rising again from 2016-2020.The final drop around 2020 should be attributed to the Coronavirus and the sudden drop in oil stocks. However, average growth for oil countries was hovering around 0% since around 2012. This is contradictory to what should be assumed about resource dependent countries. Rather than growing more rapidly with a rising price of oil, there is a peak in prices around 2003-2004 and a slight decline since. Most countries that export oil have not exceed 10% increases since 2005~ but oil price peaked in 2009 and 2015 again. While stable economic growth could be seen as a benefit, it seems dependent countries only react to oil prices when they decline rapidly and not when they steadily increase. Therefore, some mechanic is preventing GDP growth inspite of rising prices.
x = compdat[['NR_TE','NRR','Exports_TR']]
y = compdat['GDP_grow']
x = sm.add_constant(x)
lrm1 = smf.ols(formula='GDP_grow ~ NR_TE + NRR + Exports_TR',data=compdat).fit()
print(lrm1.summary())
OLS Regression Results
==============================================================================
Dep. Variable: GDP_grow R-squared: 0.014
Model: OLS Adj. R-squared: 0.012
Method: Least Squares F-statistic: 9.075
Date: Sat, 26 Nov 2022 Prob (F-statistic): 5.77e-06
Time: 16:17:24 Log-Likelihood: -6518.4
No. Observations: 1925 AIC: 1.304e+04
Df Residuals: 1921 BIC: 1.307e+04
Df Model: 3
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
Intercept 2.9199 0.490 5.964 0.000 1.960 3.880
NR_TE -0.0070 0.007 -1.037 0.300 -0.020 0.006
NRR 0.0459 0.015 2.991 0.003 0.016 0.076
Exports_TR 0.0174 0.010 1.712 0.087 -0.003 0.037
==============================================================================
Omnibus: 646.358 Durbin-Watson: 1.524
Prob(Omnibus): 0.000 Jarque-Bera (JB): 24389.035
Skew: 0.882 Prob(JB): 0.00
Kurtosis: 20.348 Cond. No. 248.
==============================================================================
Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
x = oildat[['NR_TE','Exports_TR', 'NRR','OR']]
y = oildat['GDP_grow']
x = sm.add_constant(x)
lrm2 = smf.ols(formula='GDP_grow ~ NR_TE + Exports_TR + NRR + OR',data=oildat).fit()
print(lrm2.summary())
OLS Regression Results
==============================================================================
Dep. Variable: GDP_grow R-squared: 0.034
Model: OLS Adj. R-squared: 0.031
Method: Least Squares F-statistic: 11.03
Date: Sat, 26 Nov 2022 Prob (F-statistic): 8.63e-09
Time: 16:17:24 Log-Likelihood: -4342.3
No. Observations: 1246 AIC: 8695.
Df Residuals: 1241 BIC: 8720.
Df Model: 4
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
Intercept 2.7847 0.668 4.166 0.000 1.473 4.096
NR_TE -0.0225 0.009 -2.365 0.018 -0.041 -0.004
Exports_TR 0.0157 0.014 1.125 0.261 -0.012 0.043
NRR 0.0479 0.035 1.364 0.173 -0.021 0.117
OR 0.0534 0.035 1.512 0.131 -0.016 0.123
==============================================================================
Omnibus: 426.683 Durbin-Watson: 1.613
Prob(Omnibus): 0.000 Jarque-Bera (JB): 14997.207
Skew: 0.905 Prob(JB): 0.00
Kurtosis: 19.900 Cond. No. 271.
==============================================================================
Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
These two data analysis show surprising results. LRM1 runs a regression that demonstrates that as natural resource rents increase, GDP growth also increase (.05 slope with a p<.01). For oil rich countries, as oil rents increase, GDP growth also increases ( .1 slope with a p<.05). This correlation is indicative that as GDP grows, governments seek to gain more rents from natural resources. This data is better represented in oil countries (R^2 = .03>.014). However, this data could be spread out due to differences in government types. Countries with higher economic growth (like Norway or the Saudi Arabia) are split between different types of government, such as democracies and autocracies. However, despite the variance, there is a positive correlation between government rents and GDP growth.
symbols = ['circle', 'x', 'square', 'cross', 'diamond', 'star-diamond', 'triangle-up']
fig5 = px.scatter(dffig,
x="NR_TE",
y="ln_NRR",
color='region',
symbol='region',
symbol_sequence=symbols,
hover_name='Country Name',
hover_data=['iso3c', 'NR_TE', 'NRR', 'gdp_pc'],
size='gdp_pc',
size_max=20,
trendline="ols",
trendline_scope="overall",
trendline_color_override="black",
labels={
"NR_TE": "Natural Resources as a Percentage of Total Exports",
"ln_NRR": 'Log of Natural Resource Rents',
"region": "WB Region",
"gdp_pc": "GDP Per Capita"
},
opacity=0.75,
height=700,
)
fig5.show()
symbols = ['circle', 'x', 'square', 'cross', 'diamond', 'star-diamond', 'triangle-up']
fig6 = px.scatter(dffig2,
x="NR_TE",
y="ln_OR",
color='region',
symbol='region',
symbol_sequence=symbols,
hover_name='Country Name',
hover_data=['iso3c', 'NR_TE', 'NRR', 'gdp_pc'],
size='gdp_pc',
size_max=20,
trendline="ols",
trendline_scope="overall",
trendline_color_override="black",
labels={
"NR_TE": "Natural Resources (Oil) as a Percentage of Total Exports",
"ln_OR": 'Log Oil Rents as a Percentage of GDP',
"region": "WB Region",
"gdp_pc": "GDP Per Capita"
},
opacity=0.75,
height=700,
)
fig6.show()
These analsyes demonstrate that as dependence increases, natural resource rents also increase. For both natural resources in general and oil, there is a clear positive correlation between a rise in resources as a percent of exports and government rents. Fig5 demonstrates that as natural resources increase by 1%, natural resouce rents increase by .020% (slope=.02). The only exception to this rule was Botswana, which saw a decrease in rents. Regardless of government type, all countries increased government rents as dependence on resources increased.
Oil countries showed similar data. These countries were filtered to exclude any low-level oil exporters, where oil rents are greater than 5% of total GDP. Although the R^2 is only .38, there is a clear cluster of countries with 90%+ oil exports and oil rents increasing exponentially. Oil showed a slightly more elastic correlation, as rents increase by .022% as oil exports increased by 1%. Excluding the outliers of Papua New Guinea and Mongolia would likely show a steeper slope as well, skewed towards the cluster in the top right quandrant.
It is extrememly important to note the regional differences for both natural resources and oil. The Middle East consistently ranks highest for oil exports and high resource rents. The countries with highest rents also tend to be authoritarian, such as Iraq, Saudi Arabia, and the Democratic Republic of Congo. These nations also have some of the most human rights violations and political instability. The countries with the highest rents also have medium-low GDP per capita, like Iraq and Angola. Clearly, there is a diversion of revenue from the people of the country to the government.
def my_xy_line_plot(dfin,
x='year',
y='GDP_grow',
labelvar='iso3c',
dx=0.006125,
dy=0.006125,
xlogscale=False,
ylogscale=False,
xlabel='Time',
ylabel='GDP Growth',
labels=False,
xpct = False,
ypct = False,
OLS=False,
OLSlinelabel='OLS',
ssline=False,
sslinelabel='45 Degree Line',
filename='time-gdp-growth.pdf',
hue='region',
hue_order=['East Asia & Pacific', 'Europe & Central Asia',
'Latin America & Caribbean ', 'Middle East & North Africa',
'North America', 'South Asia', 'Sub-Saharan Africa '],
style='Dependence_Deg',
style_order=['Dependent', 'High', 'Medium', 'Low'],
palette=True,
legend_fontsize=10,
label_fontsize=12,
loc=None,
save=True):
'''
Plot the association between x and var in dataframe using labelvar for labels.
'''
sns.set(rc={'figure.figsize':(11.7,8.27)})
sns.set_context("talk")
df = dfin.copy()
df = df.dropna(subset=[x, y]).reset_index(drop=True)
# Plot
k = 0
fig, ax = plt.subplots()
sns.lineplot(x=x, y=y, data=df, ax=ax,
hue=hue,
hue_order=hue_order,
alpha=1,
style=style,
style_order=style_order,
palette=palette,
)
if OLS:
sns.regplot(x=x, y=y, data=df, ax=ax, label=OLSlinelabel, scatter=False)
if ssline:
ax.plot([df[x].min()*.99, df[x].max()*1.01], [df[x].min()*.99, df[x].max()*1.01], c='r', label=sslinelabel)
if labels:
movex = df[x].mean() * dx
movey = df[y].mean() * dy
for line in range(0,df.shape[0]):
ax.text(df[x][line]+movex, df[y][line]+movey, df[labelvar][line], horizontalalignment='left', fontsize=label_fontsize, color='black')
ax.set_xlabel(xlabel)
ax.set_ylabel(ylabel)
if xpct:
fmt = '%.0f%%' # Format you want the ticks, e.g. '40%'
xticks = mtick.FormatStrFormatter(fmt)
ax.xaxis.set_major_formatter(xticks)
if ypct:
fmt = '%.0f%%' # Format you want the ticks, e.g. '40%'
yticks = mtick.FormatStrFormatter(fmt)
ax.yaxis.set_major_formatter(yticks)
if ylogscale:
ax.set(yscale="log")
if xlogscale:
ax.set(xscale="log")
handles, labels = ax.get_legend_handles_labels()
handles = np.array(handles)
labels = np.array(labels)
handles = list(handles[(labels!='region') & (labels!='incomeLevel')])
labels = list(labels[(labels!='region') & (labels!='incomeLevel')])
ax.legend(handles=handles, labels=labels, fontsize=legend_fontsize, loc=loc)
if save:
plt.savefig(pathgraphs + filename, dpi=300, bbox_inches='tight')
return fig
palette=sns.color_palette("Reds_r", compdat['Dependence_Deg'].unique().shape[0]+4)[:compdat['Dependence_Deg'].unique().shape[0]*2:2]
fig8 = my_xy_line_plot(compdat,
x='year',
y='GDP_grow',
xlabel='Year',
ylabel='GDP Growth',
filename='time-gdp-grow.pdf',
hue='Dependence_Deg',
hue_order=['Dependent', 'High', 'Medium', 'Low'],
palette=palette,
OLS=False,
labels=False,
legend_fontsize=16,
loc='lower right',
save=False)
palette=sns.color_palette("Purples_r", compdat['Dependence_Deg'].unique().shape[0]+4)[:compdat['Dependence_Deg'].unique().shape[0]*2:2]
fig9 = my_xy_line_plot(compdat,
x='year',
y='NRR',
xlabel='Year',
ylabel='Natural Resource Rents as a Percentage of GDP',
filename='time-NRR-grow.pdf',
hue='Dependence_Deg',
hue_order=['Dependent', 'High', 'Medium', 'Low'],
palette=palette,
OLS=False,
labels=False,
legend_fontsize=16,
loc='upper right',
save=False)
palette=sns.color_palette("Blues_r", compdat['Dependence_Deg'].unique().shape[0]+4)[:compdat['Dependence_Deg'].unique().shape[0]*2:2]
fig10 = my_xy_line_plot(oildat,
x='year',
y='OR',
xlabel='Year',
ylabel='Oil Rents as a Percentage of GDP',
filename='time-NRR-grow.pdf',
hue='Dependence_Deg',
hue_order=['Dependent', 'High', 'Medium', 'Low'],
palette=palette,
OLS=False,
labels=False,
legend_fontsize=16,
loc='upper right',
save=False)
As discussed in the price section, higher dependence on nautral resources creates sporatic growth and inconsistent trend lines. This is shown most clearly whe comparing dependence levels over time. Though averages are consistently positive (excluding dips in the 1980s and 2009), the highly dependent countries have much more randomized and erratic growth. An interesting note is that the overall natural resource trends follow the changes in oil prices more than the oil price nations alone. This is likely due to overall market dips when oil prices are low, affecting other natural resource markets.
Even more dramatically, natural resource rents vary over time. The highly dependent countries vary much more extremely in rents than the less dependent countries, from as low as 10% to more than 40% of GDP. Low, Medium, and High dependencies follow roughly the same trends of resource rents and the highest dependency deviates extremely. Throughout time, most of the dramatic changes in rents occur in the "dependent" category, rather than the other three categories.
Changes in rents in the dependent category for both all resources and oil-specific countries most strongly mimic trends in history. The most notable is the 2009 recession, which created a negative trend in GDP growth and rents. Both declined rapidly, but bounced back quickly. However, after 2009, most natural resources increased in price, but GDP growth did not follow this trend. It takes longer for countries to respond to increases in prices than rapid declines. This is likely due to the demand for natural resources being roughly stable except for during recessions. Then, as demand returns to normal slowly, resource rich countries have more long-term effects to their supply markets than the demand markets.
Thus, natural resources tend to have negative effects on grow, as negative shocks will be more long-lasting and dramatic than positive shocks. Over time, depedence on these resources will create asymmetrical and erratic growth, limiting true and stable development for underdeveloped countries.
Observing export centralization, price volatility, and resource rents illustrates that resource endowment does correlate heavily with economic stagnaition. Compared to total exports, natural resources have negative effects on GDP growth, GDP per capita growth, and economic diversity. Natural resources also seem to enduce economic instability, as these more resource-dependent countries are less economically stable and have erratic growth.
While there are some unique outliers, most of this data corroborates the hypothesis that resource endowment induces or encourages economic stagnation. Export centralization negatively correlated with GDP and GDP per capita growth. Unlike other exports, resources are less stable and damage the growth of the economy altogether. Similarly, resource prices are highly volatile and there is a clear correlation between dips in resource prices and GDP growth dips. However, price hikes are not correlated with rises in GDP growth. Therefore, as Ross indicated, there are more negative long-term effects of resource markets than positive effects. Finally, there is also a correlation between resource dependence and government rents. There is a clear link between government's channeling revenue and an increased dependence on resources, particularly with oil. The one relatively surprising link was a lack of correlation between authoritarian leaders and government rents. While authoritarians did consentrate about the average, there were a fair number of high-ranking democracies with high levels of resource rents. Similarly, some authoritarian states were below average for rent concentration. Altogther, our data showed a distinct correlation between natural resource dependency and stagnation in economic growth. Though growth may appear to be high at times, the erratic nature and negative long-term effects deter strong, consistent economic performance.
Adams, Dawda, Kweku Adams, Subhan Ullah, and Farid Ullah. “Globalisation, Governance, Accountability and the Natural Resource ‘curse’: Implications for Socio-Economic Growth of Oil-Rich Developing Countries.” Resources Policy 61 (2019): 128–40. https://doi.org/10.1016/j.resourpol.2019.02.009.
Federal Reserve Bank of St. Louis. "Historical WTI spot crude oil prices." Drilling Manual. https://www.drillingmanual.com/crude-oil-price-history-graph-tables-for-last-80-years/.
Ghura, Dhaneshwar and Catherine Pattillo. “Macroeconomic Policy Frameworks for Resource-Rich Developing Countries.” International Monetary Fund (2012): 1-55.
Haseeb, Muhammad, Sebastian Kot, Hafezali Iqbal Hussain, and Fakarudin Kamarudin. “The Natural Resources Curse-Economic Growth Hypotheses: Quantile–on–Quantile Evidence from Top Asian Economies.” Journal of Cleaner Production 279 (2021): 123596–. https://doi.org/10.1016/j.jclepro.2020.123596.
Lederman, Daniel, William F. Maloney. Natural Resources Neither Curse nor Destiny. Palo Alto, CA: Stanford Economics and Finance, an imprint of Stanford University Press, 2007.
Murshed, Syed Mansoob, and Leandro Antonio Serino. “The Pattern of Specialization and Economic Growth: The Resource Curse Hypothesis Revisited.” Structural Change and Economic Dynamics 22, no. 2 (2011): 151–61. https://doi.org/10.1016/j.strueco.2010.12.004.
Ross, Michael Lewin. The Oil Curse : How Petroleum Wealth Shapes the Development of Nations. Princeton, N.J: Princeton University Press, 2012.
Shu Yang, Elyas Abdulahi, Muhammad Afaq Haider, and Muhammed Asif Khan. “Revisiting the Curse: Resource Rent and Economic Growth of Sub-Sahara African Countries.” International Journal of Economics and Financial Issues 9, no. 1 (2019): 121–30.
Venables, Anthony. “Using Natural Resources for Development: Why Has It Proven So Difficult?” Journal of Economic Perspectives, 30 no.1 (2016): 161-184. https://www.aeaweb.org/articles?id=10.1257/jep.30.1.161.
Wang, Rong, Junlan Tan, and Shuangliang Yao. “Are Natural Resources a Blessing or a Curse for Economic Development? The Importance of Energy Innovations.” Resources Policy 72 (2021): 102042–. https://doi.org/10.1016/j.resourpol.2021.102042.
Williams, Andrew. “Shining a Light on the Resource Curse: An Empirical Analysis of the Relationship Between Natural Resources, Transparency, and Economic Growth.” World Development 39, no. 4 (2011): 490–505. https://doi.org/10.1016/j.worlddev.2010.08.015.